Clearing Message Broker System

ABSTRACT

Systems and methods are provided for efficiently permitting the transmission and receipt of trading messages between message sources configured to use a variety of different protocols. Messaging gateways may be configured to reformat messages for proper transmission across a transport mechanism. Routers may be dynamically partitioned so that manual reconfiguration is not required when sources and/or routers are added or deleted. The routers may be configured to route messages based on content to limit the amount of formatting required at message sources.

CROSS-REFERENCE TO RELATED APPLICATION

This is application is a continuation of U.S. patent application Ser.No. 11/234,727, filed Sep. 23, 2005 and entitled “Clearing MessageBroker System,” the entire disclosure of which is hereby incorporated byreference herein.

FIELD OF THE INVENTION

The present invention relates to distributed computing systems thatexchange messages. More particularly, aspects of the invention providingmessaging systems and methods that may be used by exchange computersystems to exchange messages in a cost-efficient manner.

DESCRIPTION OF THE RELATED ART

Modern exchanges use a variety of different computer systems to matchtrades, clear trades and perform other exchange functions. It is commonfor exchanges to use computer hardware and software that rely onpoint-to-point routing of messages between applications that areinitially designed to support different protocols. For example, asoftware application may be structured to create messages formatted inaccordance with a first protocol and another software application mayonly be able to interpret messages formatted in accordance with a secondprotocol.

Typically these types of incompatibility issues have been addressed bymodifying the software applications. In the example given above, thesoftware application creating the message may be modified to createmessages formatted in accordance with the second protocol. When thenumber of software applications and transport mechanisms reach the levelfound at modern exchanges, the overhead incurred in modifyingapplications and transport mechanisms so that each application iscapable of communicating with all other relevant applications becomesenormous. For example, adding a software application may requiremodifying several other existing applications, which may have alreadybeen modified before.

Therefore, there is a need in the art for systems and methods that allowapplication to communicate with one another while reducing the overheadincurred in maintaining such systems.

SUMMARY OF THE INVENTION

Aspects of the present invention overcome problems and limitations ofthe prior art by providing trading methods and systems to moreefficiently provide for the transmission and receipt of tradingmessages. One aspect relates to associating an application to amessaging gateway that may be configured to alter the message for propertransmission. In one embodiment, the messaging gateway formats themessage for proper transmission through one or more transport protocols.In yet another embodiment, the messaging gateway formats the message toallow another unrelated application to receive and/or read the message.Another aspect relates to assigning one router with a distributedcomputing environment to serve as a partitioning coordinator router. Thedynamic partitioning of the routers does not require reconfiguration ofthe router to the specific sources or applications it has been assignedto. In one embodiment, the first router detected may serve as thepartitioning coordinator router. Yet still further aspects of theinvention relate to allowing the partitioning coordinator router todynamically partition the available sources or applications configuredto transmit among the available routers. Computer readable instructionsmay comprise routing rules configured, that when executed, allow forcontent based routing as opposed to point-to-point based routing. Thecontent based routing may be accomplished regardless of the protocols ofthe different sources and/or endpoints and

Of course, the methods and systems of the above-referenced embodimentsmay also include other additional elements, steps, computer-executableinstructions, or computer-readable data structures. In this regard,other embodiments are disclosed and claimed herein as well.

The details of these and other embodiments of the present invention areset forth in the accompanying drawings and the description below. Otherfeatures and advantages of the invention will be apparent from thedescription and drawings, and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention may take physical form in certain parts and steps,embodiments of which will be described in detail in the followingdescription and illustrated in the accompanying drawings that form apart hereof, wherein:

FIG. 1 shows a computer network system that may be used to implementaspects of the present invention;

FIG. 2 illustrates a flowchart of one exemplary computer implementedmethod according to one embodiment of the present invention;

FIG. 3 shows one exemplary distributed computing system that may be usedto implement one or more aspects of the invention; and

FIG. 4 shows one illustrative trading application communicating with anexchange computer system through at least one router in a distributedcomputer environment according to one embodiment of the invention.

DETAILED DESCRIPTION OF THE INVENTION

Aspects of the present invention may be implemented with computerdevices and computer networks that allow exchanges to process trades andexchange data among applications. An exemplary trading networkenvironment for implementing trading systems and methods is shown inFIG. 1. An exchange computer system 100 receives orders and transmitsmarket data related to orders and trades to users. Exchange computersystem 100 may be implemented with one or more mainframe, desktop orother computers. A user database 102 includes information identifyingtraders and other users of exchange computer system 100. Data mayinclude user names and passwords potentially with other information toidentify users uniquely or collectively. An account data module 104 mayprocess account information that may be used during trades. A matchengine module 106 is included to match bid and offer prices. Matchengine module 106 may be implemented with software that executes one ormore algorithms for matching bids and offers.

A trade database 108 may be included to store information identifyingtrades and descriptions of trades. In particular, a trade database maystore information identifying the time that a trade took place and thecontract price. An order book module 110 may be included to compute orotherwise determine current bid and offer prices. A market data module112 may be included to collect market data and prepare the data fortransmission to users. A risk management module 134 may be included tocompute and determine a user's risk utilization in relation to theuser's defined risk thresholds. An order processing module 136 may beincluded to decompose variable defined derivative product and aggregateorder types for processing by order book module 110 and match enginemodule 106.

The trading network environment shown in FIG. 1 includes computerdevices 114, 116, 118, 120 and 122. Each computer device includes acentral processor that controls the overall operation of the computerand a system bus that connects the central processor to one or moreconventional components, such as a network card or modem. Each computerdevice may also include a variety of interface units and drives forreading and writing data or files. Depending on the type of computerdevice, a user can interact with the computer with a keyboard, pointingdevice, microphone, pen device or other input device.

Computer device 114 is shown directly connected to exchange computersystem 100. Exchange computer system 100 and computer device 114 may beconnected via a T1 line, a common local area network (LAN) or othermechanism for connecting computer devices. Computer device 114 is shownconnected to a radio 132. The user of radio 132 may be a trader orexchange employee. The radio user may transmit orders or otherinformation to a user of computer device 114. The user of computerdevice 114 may then transmit the trade or other information to exchangecomputer system 100.

Computer devices 116 and 118 are coupled to a LAN 124. LAN 124 may haveone or more of the well-known LAN topologies and may use a variety ofdifferent protocols, such as Ethernet. Computers 116 and 118 maycommunicate with each other and other computers and devices connected toLAN 124. Computers and other devices may be connected to LAN 124 viatwisted pair wires, coaxial cable, fiber optics or other media.Alternatively, a wireless personal digital assistant device (PDA) 122may communicate with LAN 124 or the Internet 126 via radio waves. PDA122 may also communicate with exchange computer system 100 via aconventional wireless hub 128. As used herein, a PDA includes mobiletelephones and other wireless devices that communicate with a networkvia radio waves.

FIG. 1 also shows LAN 124 connected to the Internet 126. LAN 124 mayinclude a router to connect LAN 124 to the Internet 126. Computer device120 is shown connected directly to the Internet 126. The connection maybe via a modem, DSL line, satellite dish or any other device forconnecting a computer device to the Internet.

One or more market makers 130 may maintain a market by providing bid andoffer prices for a derivative or security to exchange computer system100. Exchange computer system 100 may also exchange information withother trade engines, such as trade engine 138. One skilled in the artwill appreciate that numerous additional computers and systems may becoupled to exchange computer system 100. Such computers and systems mayinclude clearing, regulatory and fee systems. Coupling can be direct asdescribed or any other method described herein.

The operations of computer devices and systems shown in FIG. 1 may becontrolled by computer-executable instructions stored on acomputer-readable medium. For example, computer device 116 may includecomputer-executable instructions for receiving order information from auser and transmitting that order information to exchange computer system100. In another example, computer device 118 may includecomputer-executable instructions for receiving market data from exchangecomputer system 100 and displaying that information to a user.

Of course, numerous additional servers, computers, handheld devices,personal digital assistants, telephones and other devices may also beconnected to exchange computer system 100. Moreover, one skilled in theart will appreciate that the topology shown in FIG. 1 is merely anexample and that the components shown in FIG. 1 may be connected bynumerous alternative topologies.

FIG. 2 illustrates a flowchart of one exemplary computer implementedmethod according to one embodiment of the present invention. In step205, a router accesses a list of available message sources. The messagesources may comprise software applications that are configured tocommunicate with one another. The software applications may be developedby different vendors and use inconsistent messaging protocols. Asillustrated, the messages may comprise information relating to trading,such as clearing information, orders, etc. One exemplary distributedcomputing system that may be used to implement step 205 is shown in FIG.3. As seen in FIG. 3, distributed computing system 300 comprises aplurality of routers, such as routers 305, 310, and 315. One skilled inthe art will readily appreciate that additional or fewer routers may beutilized in different embodiments of the disclosed invention and threerouters are shown for illustrative purposes only. Each of the routers305, 310, and 315 may access the list of available message sources, suchas database table 320. As seen database table 320, a plurality ofmessage sources may be provided. As one skilled in the art will realize,the list of available message sources may be in any form or format as topermit information transfer to and from the routers.

Returning briefly to FIG. 2, step 210 may be initiated to designate oneof the plurality of routers as a partitioning coordinator router. Thepartitioning coordinator router may be the first router to be placedon-line or start. As seen in FIG. 3, router 305 has been designated asthe partitioning coordinator router. In at least one embodiment of theinvention, any of the plurality of routers in the distributed computingsystem may serve as the partitioning coordinator router. Each of theplurality or at least a subset of the plurality of routers comprisescomputer executable instructions to serve as the partitioningcoordinator router. Indeed, in yet other embodiments, the duties andpartitioning functions of the partitioning coordinator router (describedbelow) may be distributed among several routers.

In the illustrated embodiment, router 305 may be the first router to beplaced on-line or otherwise to be detected by the system 300 andtherefore determined to be the partitioning coordinator router. As oneskilled in the art will readily understand, any set of criteria may beused to determine which router(s) are selected as a partitioningcoordinator router, such as for example, reliability, total bandwidth,available bandwidth, status, and or location of the router.

At step 215, the partitioning coordinator router dynamically partitionsthe available sources among the available plurality of routers. Step 215may include accessing a list of message sources, such as that indatabase table 320, and assigning the messages sources to specificrouters. The dynamic partitioning allows the sources of the messages tobe “assigned” to a router without requiring reconfiguration of therouter to specific sources. As seen in FIG. 3, sources 321-323 have beenassigned to router 305 and sources 326-328 have been assigned to router310. When new message sources are added, database table 320 may beupdated to list the sources and the sources will be assigned to routersat the next dynamic partitioning step. Dynamic partitioning may beinitiated at router start up, periodically, when new sources are added,at a time selected by a user or any other time.

Optional step 220 may be implemented to assign “backup” routers tospecific sources. For example, while source 321 is associated withrouter 305, router 310 may be assigned as a backup router to source 321,wherein upon the malfunctioning of router 305, source 321 may beassociated with router 315.

Step 225 may also be implemented to detect the status of one or more ofthe routers, such as for example, when a router goes “offline”,malfunctions, or is overwhelmed with requests. In one embodiment, astatus signal may be in the form of a heartbeat signal, whereinheartbeat messages may be transmitted from the routers to ensure theyare functioning properly. In one such embodiment, available routers maybe deemed “available” if heartbeat messages are received from therouters within a predetermined period of time. Conversely, if aheartbeat signal is not received from a router within a predeterminedamount of time, the router may be deemed malfunctioning and anyassociated sources may be reassigned to other available routers. Inthose embodiments utilizing a backup router as described above, theavailable sources may be associated with a predetermined backup router.Yet in other embodiments, the sources associated with the malfunctioningrouter may be dynamically partitioned by the partitioning coordinatorrouter, for example by initiating step 230.

In yet other embodiments, one or more routers may be configured to senda status signal indicating their status. For example, if router 315 isconfigured to handle a maximum of 100 message sources per unit of timeand is already close to, at, or above that maximum threshold, a statussignal may be transmitted from router 315 to another router or anycomputing device within the computing system 100. The signal may be usedto reassign some sources to other available routers. Indeed, one skilledin the art will realize the status signal may be configured to provideany information regarding the status of the router or associatedsources.

In the event that a router goes offline, is overwhelmed with requests,or becomes unavailable, step 230 may be implemented to reassign orotherwise associate those sources associated with the particular routerwith another available router. This is done without requiring manualreprogramming of each router. Likewise step 230 may be implemented toreassign sources when a new router becomes available, underutilized orotherwise desirable to have the source associated with. As one skilledin the art will realize, all the reassigned sources may not collectivelybe reassigned to another router, but rather may be distributed amongother routers depending on a myriad of factors, such as the formatand/or content of messages being communicated to/from those sources.

FIG. 4 shows one illustrative trading application communicating with anexchange computer system through at least one router in a distributedcomputer environment according to one embodiment of the invention. Forexample trading application 405 may be configured to initiate an orderor otherwise transmit and receive trading data with one or morecomputers in a distributed computing system. As seen in FIG. 4, tradingapplication 405 is configured to be in operative communication withexchange computer system 450 through the distributed computing system400. As will be explained in greater detail below, trading application405 may be configured to communicate with a plurality of computers, someof which may have differing functions than exchange computer system 450.

In one embodiment, trading application 405 may be a source, (such assource 321) that is associated with router 435. As previously discussed,in such an embodiment, trading application 405 may be associated withanother router if router 435, for example, becomes unavailable oroverwhelmed with other sources. Trading application 405 may be forexample, software, hardware, firmware, or indeed any computer readableinstructions capable of sending and/or receiving a message or permittingother instructions to send and/or receive a message to another computingdevice. The trading application may communicate with other peripheralsand computers within the system 400 by wired or wireless protocols.

In the illustrated embodiment, trading application 405 is configured totransmit message 410. Message 410 comprises a message type 410 a andcontent 410 b. The message type may be used to categorize the type ofmessage. For example, the message type 410 a indicates that message 410is a trade message. One skilled in the art will realize that the system400 may be configured to allow a vast array of message categories thatmay be updated or otherwise changed over time by an administrator or endusers. Indeed, in one embodiment, the type of the message determines oneor more transport protocols that may be used to transport the message.In the illustrated embodiment, message 410 includes content 410 bcomprising “add trade A”. While the content in message 410 is in plaintext, it is to be understood that any alphanumeric combination may beused. Indeed, in one embodiment, the content of the message may becomputer executable code. Message 410 may be in any format, includingpropriety or open-source. The label “Protocol X” has been placed withinthe message to more readily illustrate aspects of the invention to thereader. As discussed above and throughout the specification, the formatand protocol of messages may be distinct from other messages from otherapplications and/or sources communicating within the distributedcomputing system 400.

As seen in the FIG. 4, message 410 may then be received at messaginggateway 415. Messaging gateway 415 is configured to place message 410and other received messages into a proper format to be transferredthrough a transport mechanism, such as transport mechanism 420.Transport mechanism 420 may be any computer aided method of transmittingdata, such as sockets, e-mail servers, or indeed any method known tothose skilled in the art or developed in the art to electronicallytransport information. For example, in one embodiment the message may bein HTML format and transported across the web or other networksupporting HTML, whereas in another embodiment a plurality of differingtransport mechanisms are utilized to deliver the messages.

As one skilled in the art will readily appreciate, trading messages maynot be received at a messaging gateway in the order it was received. Forexample, source 327 may be in communication with message gateway 310through a high speed connection that allows more messages to be receivedin a shorter time frame than a message received from source 328. It isoften important to process the trading messages in a sequential order.In one embodiment of the invention, the messages entering the messagegateway further comprise a message ID or other mechanism to allow themessage gateways to determine the proper sequence of the messages.Therefore, although the message gateways may be configured tosimultaneously process a plurality of messages (even from differentsources), the message gateway may be configured to allow concurrentprocessing with sequence preservation.

The transport mechanism may communicate with a plurality of messaginggateways, such as messaging gateways 415, 430 and 440 through one ormore input ports (see, for example, ports 422, 424, and 426) and one ormore output ports (see, for example, ports 421, 423, and 425). Forexample, outgoing message 410 may be received in input port 422 andtransmitted first to messaging gateway 430 through output port 423. Asseen in FIG. 4, messaging gateway 430 is associated with router 435,wherein messaging gateway 430 may be configured to listen for messagestransmitted to or otherwise received at the router 435. While the figureshows the messaging gateways and the router (such as messaging gateway430 and router 435) as two separate structures, in one alternativeembodiment, messaging gateways may perform the function of the disclosedrouters and may further allow for point-to-point communications inaddition with communications disclosed herein. One or more the disclosedmessaging gateways may also be configured to manage transactions andthreads on behalf of client systems, which may include routers. Many ofthe aspects of the invention are illustrated to the user as individualstructures to more readily portray to various embodiments; however, eachof the illustrated structures may be combined.

As router 435 illustrates, a set of routing rules may be applied to amessage incoming to the router. The routing rules may be stored on acomputer readable medium within a router, for example, a partitioningcoordinating router, such as router 305, or in a plurality of therouters within the distributed computing system. Rules 436 and 437provide exemplary rules that may be used in one embodiment of theinvention. The routing rules may be configured to allow for contentbased routing as opposed to point-to-point based routing. As previouslymentioned, the content based routing may be accomplished regardless ofthe protocols of the different sources and/or endpoints.

Looking to rule 436, it has instructions to indicate messages having thecontent “add trade A” are to be routed to exchange computer system 450.Upon receiving message 410 and analyzing at least a portion of itscontent with the rules, it is determined where to transmit the message.In the illustrated example, message 410 is transmitted to exchangecomputer system 450. The message may then be again routed throughmessaging gateway 430 or a separate gateway to format the outgoingmessage based on the protocol(s) utilized by the application to receivethe message at system 450. In this manner, trading application 405 mayutilize a different protocol than exchange computer system 450 and stillreceive the message without substantial inefficiencies. Messaginggateway 430 may also reformat or adjust the message or container holdingthe message to a format to properly be transmitted across the transportlayer or layers that the message

The present invention has been described herein with reference tospecific exemplary embodiments thereof. It will be apparent to thoseskilled in the art that a person understanding this invention mayconceive of changes or other embodiments or variations, which utilizethe principles of this invention without departing from the broaderspirit and scope of the invention as set forth in the appended claims.All are considered within the sphere, spirit, and scope of theinvention. For example, aspects of the invention may be used with anynumber of combinations of spread strategies that when examined on alink-by-link basis are comprised of the same underlying financialinstruments.

1. An exchange computer system comprising: a plurality of routersconfigured to route messages; a computer readable medium storing theidentification of a plurality of message sources that generate messages;and a partitioning coordinator router programmed withcomputer-executable instructions to cause the partitioning coordinatorrouter to perform steps comprising (a) accessing the identification ofthe plurality of message sources, (b) dynamically partitioning theplurality of message sources among the plurality of routers to create afirst assignment of the plurality of message sources to the plurality ofrouters, (c) determining to initiate a partitioning of the plurality ofmessage sources among the plurality of routers, and (d) in response to(c), dynamically partitioning the plurality of message sources among theplurality of routers to create a second assignment of the plurality ofmessage sources to the plurality of routers, wherein the secondassignment is different from the first assignment.
 2. The exchangecomputer system of claim 1, wherein the plurality of message sourcesincludes a match engine.
 3. The exchange computer system of claim 1,wherein the plurality of message sources includes a trade clearingapplication.
 4. A computer implemented method of configuring adistributed computing system having a plurality of routers configured toroute messages, the method comprising: (a) storing an identification ofa plurality of available message sources that are configured tocommunicate with one another; (b) accessing with a partitioningcoordinator router the identification of the plurality of availablemessage sources; (c) dynamically partitioning the plurality of availablemessage sources among a plurality of routers that includes thepartitioning coordinator router to create a first assignment of theplurality of available message sources to the plurality of routers; (d)determining to initiate a partitioning of the plurality of availablemessage sources among the plurality of routers; and (e) in response to(d), dynamically partitioning the plurality of available message sourcesamong the plurality of routers to create a second assignment of theplurality of available message sources to the plurality of routers,wherein the second assignment is different from the first assignment. 5.The computer implemented method of claim 4, wherein (b) comprisesdesignating the first router detected within the distributed computersystem as the partitioning coordinator router.
 6. The computerimplemented method of claim 5, wherein the designation of thepartitioning coordinator router is based on a factor of the routerselected from the group consisting of: reliability, total bandwidth,available bandwidth, status, location and combinations thereof.
 7. Thecomputer implemented method of claim 4, further comprising: (d)assigning at least one of the plurality of routers as a backup router;(e) periodically receiving an indication of the status of thepartitioning coordinator router; and (f) when the partitioningcoordinator router malfunctions, repartitioning the sources so that theat least one backup router performs the function of the partitioningcoordinator router.
 8. The computer implemented method of claim 4,further comprising: (d) configuring at least one router to transmit astatus signal to the partitioning coordinator router at a predeterminedperiod of time, wherein if the status signal is not received within thepredetermined period of time, the sources associated with the at leastone router are assigned to at least one other router within thedistributed computer system without requiring reconfiguration of the atleast one other router to the sources that have reassigned to it.
 9. Thecomputer implemented method of claim 8, further comprising: (e) uponreceiving the status signal in (d), deciphering the signal to determinewhether to reassign the sources assigned to the at least one routertransmitting the status signal to another router among the plurality ofrouters.
 10. The computer implemented method of claim 4, furthercomprising: (d) providing a messaging gateway to be in operativecommunication with the at least one message source, the messaginggateway being configured to place a message transmitted from the atleast one message source into a proper format to be transferred througha transport mechanism.
 11. A distributed computing system for exchangingtrading information comprising: (a) at least one message sourceconfigured to transmit a trade message, wherein the trade messagecomprises content; (b) a messaging gateway in operative communicationwith the at least one message source that is configured to communicatewith other message sources, the messaging gateway being configured toplace a message transmitted from the at least one message source into aformat to be transferred through a transport mechanism; (c) a pluralityof routers, comprising at least one partitioning coordinator router, andeach including a computer readable medium having computer readableinstructions for (i) dynamically partitioning available message sourcesamong the plurality of routers to create a first assignment of theavailable message sources to the plurality of routers, (ii) determiningto initiate a partitioning of the available message sources among theplurality of routers, and (iii) in response to (ii), dynamicallypartitioning the available message sources among the plurality ofrouters to create a second assignment of the available message sourcesto the plurality of routers, wherein the second assignment is differentfrom the first assignment; and (d) a computer readable medium havingcomputer readable instructions comprising routing rules for routing themessage of (a) to a computing device in the distributed computingenvironment based upon the content of the message.
 12. The distributedcomputing system of claim 11, wherein the at least one message sourcecomprises a plurality of different applications.
 13. The distributedcomputing system of claim 12, wherein the plurality of differentapplications are not configured to create and process messages with asingle format.
 14. The distributed computing system of claim 11, whereincomputer readable medium having the computer readable instructions fordynamically partitioning the available sources is integrated with thepartitioning coordinator router.
 15. The distributed computing system ofclaim 11, further comprising: (e) a message gateway in operativecommunication at least one of the routers, wherein upon the messagebeing routed by the router, the message is transmitted to the messagegateway and altered for transport through a transport mechanism.
 16. Thedistributed computing system of claim 11, further comprising: (e) amessage gateway in operative communication at least one of the routersand configured to change the format of received messages into formatsthat may be interpreted by applications at endpoints.
 17. A method oftransporting a trade message in a distributed computing systemcomprising a plurality of routers, the method comprising the steps of:(a) detecting a plurality of routers within the distributed computingsystem; (b) dynamically partitioning a plurality of available messagesources that are configured to communicate with one another among theplurality of routers; (c) transmitting from one of the message sourcesto a message gateway a trade message comprising content; (d) altering aformat of the trade message at the message gateway so that the messageis in a format that may be interpreted by a destination message source;and (e) routing the trade message to an associated router from (b),wherein routing of the trade message at the router is based upon thecontent of the message, wherein (b) comprises (i) dynamicallypartitioning the plurality of available message sources among theplurality of routers to create a first assignment of the plurality ofavailable message sources to the plurality of routers, (ii) determiningto initiate a partitioning of the plurality of available message sourcesamong the plurality of routers, and (iii) in response to (ii),dynamically partitioning the plurality of available message sourcesamong the plurality of routers to create a second assignment of theplurality of available message sources to the plurality of routers,wherein the second assignment is different from the first assignment.18. The method of claim 17, wherein the messages further comprise amessage ID and the message gateway is configured to provide sequencepreservation while permitting simultaneous concurrent processing of aplurality of messages.
 19. The method of claim 17, wherein the messagefurther comprises a type, wherein the type of the trade messagedetermines at least one transport mechanism that is utilized totransport the message.
 20. The method of claim 17, wherein one of theavailable message sources includes a match engine.